/*
 * @Author: chendeji
 * @Date: 2021-11-15 18:48:47
 * @LastEditTime: 2021-11-16 22:19:11
 * @Description: 
 * @FilePath: \copy_gsy_github_app_flutter\lib\page\login\controller.dart
 * 联系方式：
 * wx: melody_2009
 * qq: 7815171323 
 */
import 'dart:convert';

import 'package:copy_gsy_github_app_flutter/common/model/User.dart';
import 'package:copy_gsy_github_app_flutter/page/login/behavior/oauth_behavior.dart';
import 'package:get/get.dart';

import 'index.dart';

class LoginController extends GetxController {
  LoginController();

  /// 响应式成员变量

  final state = LoginState();

  /// 成员变量

  /// 事件
  Future<User> login(String code) async {
    /// 授权登录，拉取用户数据
    OauthBehavoir behavoir = OauthBehavoir();
    behavoir.param = code;
    behavoir.loading();
    var result = await behavoir.request();
    behavoir.finishLoad();
    return result.data;
  }

  /// 生命周期

  ///在 widget 内存中分配后立即调用。
  ///你可以用它来为控制器初始化 initialize 一些东西。
  @override
  void onInit() {
    super.onInit();
    // new 对象
    // 初始静态数据
  }

  ///在 onInit() 之后调用 1 帧。这是进入的理想场所
  ///导航事件，例如 snackbar、对话框或新route，或
  ///async 异步请求。
  @override
  void onReady() {
    super.onReady();
    // async 拉取数据
  }

  ///在 [onDelete] 方法之前调用。 [onClose] 可能用于
  ///处理控制器使用的资源。就像 closing events 一样，
  ///或在控制器销毁之前的流。
  ///或者处置可能造成一些内存泄漏的对象，
  ///像 TextEditingControllers、AnimationControllers。
  ///将一些数据保存在磁盘上也可能很有用。
  @override
  void onClose() {
    super.onClose();
    // 1 stop & close 关闭对象
    // 2 save 持久化数据
  }

  ///dispose 释放内存
  @override
  void dispose() {
    super.dispose();
    // dispose 释放对象
  }
}
